#include <my_head.h>

// 如果想给线程传多个参数 可以封装结构体
typedef struct _Msg{
    char gender;
    int id;
    char name[16];
    short score;
}msg_t;

// 线程处理函数--线程体
void *task_func(void *arg){
    #if 0
    // 处理参数的方式1：
    msg_t *p = (msg_t *)arg;
    printf("我是子线程 %c %d %s %d\n", \
        p->gender, p->id, p->name, p->score); // M 1001 zhangsan 98 
    #else
    // 处理参数的方式2：
    msg_t num = *(msg_t *)arg;
    printf("我是子线程 %c %d %s %d\n", \
        num.gender, num.id, num.name, num.score); // M 1001 zhangsan 98
    #endif
}

int main(int argc, const char *argv[]){
	msg_t value = {'M', 1001, "zhangsan", 98};
    pthread_t tid = 0;
    int ret = 0;
    if(0 != (ret = pthread_create(&tid, NULL, task_func, &value))){
        printf("pthread_create error : [%d] [%s]\n", ret, strerror(ret));
        exit(EXIT_FAILURE);
    }
    printf("我是主线程 %c %d %s %d\n", \
        value.gender, value.id, value.name, value.score); // M 1001 zhangsan 98 
    sleep(100);
    return 0;
}
